using System.ComponentModel.DataAnnotations;
using System.Data.Entity.ModelConfiguration;
using Intelsi.Entity;

namespace Intelsi.DataAccess.Mapping
{
    public class ProyectoMap : EntityTypeConfiguration<Proyecto>
    {
        public ProyectoMap()
        {
            // Primary Key
            this.HasKey(t => t.IdProyecto);

            // Properties
            this.Property(t => t.OrdenServicio)
                .IsRequired()
                .HasMaxLength(10);

            this.Property(t => t.Empresa)
                .IsRequired()
                .HasMaxLength(250);

            this.Property(t => t.Moneda)
                .IsRequired()
                .HasMaxLength(10);

            this.Property(t => t.Descripcion)
                .IsRequired()
                .HasMaxLength(500);

            this.Property(t => t.Estado)
                .IsRequired()
                .HasMaxLength(10);

            this.Property(t => t.Comentario)
                .HasMaxLength(350);

            // Table & Column Mappings
            this.ToTable("Proyecto");
            this.Property(t => t.IdProyecto).HasColumnName("IdProyecto");
            this.Property(t => t.OrdenServicio).HasColumnName("OrdenServicio");
            this.Property(t => t.Empresa).HasColumnName("Empresa");
            this.Property(t => t.Costo).HasColumnName("Costo");
            this.Property(t => t.Moneda).HasColumnName("Moneda");
            this.Property(t => t.Descripcion).HasColumnName("Descripcion");
            this.Property(t => t.FechaInicio).HasColumnName("FechaInicio");
            this.Property(t => t.PlazoDeEjecucion).HasColumnName("PlazoDeEjecucion");
            this.Property(t => t.FechaFin).HasColumnName("FechaFin");
            this.Property(t => t.Estado).HasColumnName("Estado");
            this.Property(t => t.Comentario).HasColumnName("Comentario");
        }
    }
}
